<template>
  <div class="login-wrap">
    <div class="ms-login">
      <div class="ms-title">后台管理系统</div>
      <el-form :model="param" :rules="rules" ref="loginForm" label-width="0px" class="ms-content">
        <el-form-item prop="username">
          <el-input v-model="param.username" placeholder="username">
            <template #prepend>
              <el-button icon="el-icon-user"></el-button>
            </template>
          </el-input>
        </el-form-item>
        <el-form-item prop="password">
          <el-input type="password" placeholder="password" v-model="param.password" @keyup.enter="goLogin()">
            <template #prepend>
              <el-button icon="el-icon-lock"></el-button>
            </template>
          </el-input>
        </el-form-item>
        <div class="login-btn">
          <el-button type="primary" @click="goLogin()">登录</el-button>
        </div>
        <p class="login-tips">Tips : 用户名和密码随便填。</p>
      </el-form>
    </div>
  </div>
</template>

<script lang="ts">
import { defineComponent, reactive, toRefs, ref } from 'vue';
import { ElFormItemContext } from 'element-plus/es/tokens';
import { useRouter } from 'vue-router';
import { ElMessage } from 'element-plus/es';
import * as fs from 'fs';
import axios from 'axios';
import os from 'os';

export default defineComponent({
  setup() {
    const loginForm = ref<ElFormItemContext>();
    const state = reactive({
      param: {
        username: 'User01',
        password: '123456'
      },
      rules: {
        username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
        password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
      }
    });

    // 运行cmd命令
    const mRouter = useRouter();
    const msg = ElMessage;
    let JsonPath = 'C:/Users/' + os.userInfo().username + '/AppData/Roaming/le-cli-game/soft.json';

    // 登录
    const goLogin = async () => {
      if (!loginForm.value) return;
      else
        try {
          await loginForm.value.validate('blur');
          const { data: res } = await axios.get(
            '/login?username=' + state.param.username + '&password=' + state.param.password
          );
          if (res === 'Success') {
            localStorage.setItem('user', state.param.username);
            await mRouter.push('/index');
          } else {
            msg.error('链接错误，请核对用户名和密码！');
          }
        } catch (error) {
          console.log(error);
          msg.error('服务器状态异常请稍后重试！');
        }
    };

    const goReset = () => {
      loginForm.value?.resetField();
    };

    return {
      ...toRefs(state),
      goLogin,
      goReset,
      loginForm
    };
  }
});
</script>

<style scoped>
.login-wrap {
  position: relative;
  width: 100%;
  height: 100%;
  background-image: url(../assets/img/login-bg.jpg);
  background-size: 100%;
}

.ms-title {
  width: 100%;
  line-height: 50px;
  text-align: center;
  font-size: 20px;
  color: #fff;
  border-bottom: 1px solid #ddd;
}

.ms-login {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 350px;
  margin: -190px 0 0 -175px;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.3);
  overflow: hidden;
}

.ms-content {
  padding: 30px 30px;
}

.login-btn {
  text-align: center;
}

.login-btn button {
  width: 100%;
  height: 36px;
  margin-bottom: 10px;
}

.login-tips {
  font-size: 12px;
  line-height: 30px;
  color: #fff;
}
</style>
